<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>

</html>
<script>
    //1.排序
    // var arr = [12, 3, 6, 896, 45, -12, 0, 100, 456, 3];
    // sort排序
    // console.log(arr.sort(function(a, b) {
    //     return a - b;
    // }));

    // 随便排序。
    // for (var i = 0; i < arr.length; i++) {
    //     for (var j = 0; j < arr.length; j++) {
    //         if (arr[i] < arr[j]) {
    //             var temp = arr[i];
    //             arr[i] = arr[j];
    //             arr[j] = temp
    //         }
    //     }
    // }
    // console.log(arr);// [-12, 0, 3, 3, 6, 12, 45, 100, 456, 896]



    //2.冒泡排序
    // 比较相邻的元素。如果第一个比第二个大，就交换他们两个。
    // 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对,在这一点，最后的元素应该会是最大的数。
    // 针对所有的元素重复以上的步骤，除了最后一个。
    // 持续每次对越来越少的元素重复上面的步骤，直到没有任何一对数字需要比较。
    // var arr = [12, 3, 6, 896, 45, -12, 0, 100, 456, 3];
    // for (var i = 0; i < arr.length - 1; i++) { //比较的轮数。 -1：10个数字只需要比较9轮。
    //     for (var j = 0; j < arr.length - i - 1; j++) { //第一轮的两两比较 -1：10个数字，两两比较9次  -i:每一轮都会排好一个数字
    //         if (arr[j] > arr[j + 1]) {
    //             var temp = arr[j];
    //             arr[j] = arr[j + 1];
    //             arr[j + 1] = temp;
    //         }
    //     }
    // }
    // console.log(arr);

    //3.选择排序
    //第一次从待排序的数据元素中选出最小（或最大）的一个元素，存放在序列的起始位置，然后再从剩余的未
    //排序元素中寻找到最小（ 大） 元素， 然后放到已排序的序列的末尾。 以此类推直到全部待排序的数据元素
    //的个数为零。 选择排序是不稳定的排序方法。
    // var arr = [12, 3, 6, 896, 45, -12, 0, 100, 456, 3];
    // for (var i = 0; i < arr.length; i++) {
    //     var minindex = i; //假设最小值索引
    //     var minvalue = arr[minindex]; //依次假设最小值。  3
    //     for (var j = i + 1; j < arr.length; j++) {
    //         if (arr[j] < minvalue) { //如果当前的值比假设最小值还要写。
    //             minvalue = arr[j]; //最小值赋值
    //             minindex = j; //存储最小值的索引。//根据索引找值，值变化的。
    //         }
    //     }
    //     // 上面的内层循环结束了,求得真正的最小值,进行交换
    //     // minvalue最小值
    //     // minindex最小值的索引。

    //     // 利用假设的最小值的索引和真正的最小值的索引进行比较，如果不相等，说明假设不成立，交换位置。
    //     if (i !== minindex) { //假设不成立才交换。
    //         var temp = arr[i];
    //         arr[i] = arr[minindex];
    //         arr[minindex] = temp;
    //     }
    //     //[-12, 3, 6, 896, 45, 12, 0, 100, 456, 3];
    // }
    // console.log(arr);

    //4.选择排序错误演示
    // var arr = [24, 3, 6, 896, 45, -12, 0, 100, 456, 3];
    // for (var i = 0; i < arr.length; i++) {
    //     var minvalue = arr[i]; //按照顺序依次假设每一个值都是最小值。第一次：24  第二次：3...
    //     for (var j = i + 1; j < arr.length; j++) {
    //         if (minvalue > arr[j]) {
    //             minvalue = arr[j] //第一轮结束：-12  第二轮：-12  第三轮：-12  就是固定的值
    //         }
    //     }
    //     //进行交换
    //     //第一次，这里只是将最小值-12给了arr[i]这个位置，而24根本写不进数组。也就是数组的第六位数字依然是-12.
    //     //所以第二次，求最小值还是这个第六位的数字-12.但是交换后依然写不进数组，第六位数字依然是-12.
    //     //后面的每一次都是这样。
    //     var temp = arr[i];
    //     arr[i] = minvalue;
    //     minvalue = temp;
    //     console.log(arr); //每次排序的结果
    // }
</script>